package icu.xuyijie.mysecondspringboot.interceptor;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.servlet.HandlerInterceptor;

/**
 * @author 徐一杰
 * @date 2024/11/11 10:39
 * @description 登录拦截器
 */
@Slf4j
public class LoginInterceptor implements HandlerInterceptor {
    /**
     * 在进入 controller 之前执行
     * @param request 请求信息
     * @param response 控制响应
     * @param handler 方法元数据
     * @return true 是放行，false 是拦截
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        log.info("进入 preHandle 方法，url：{}", request.getRequestURI());

        HttpSession session = request.getSession();
        Object isLogin = session.getAttribute("isLogin");
        // 代表未登录
        if (isLogin == null) {
            log.error("未登录");
            // 重定向到登录界面
            response.sendRedirect("/");
            // 拦截
            return false;
        }

        // 代表放行
        return true;
    }
}
